//
//  UIImage+SJCategory.h
//  Project With OC
//
//  Created by Jaesun on 16/7/26.
//  Copyright © 2016年 S.J. All rights reserved.
//

#import <UIKit/UIKit.h>


// typedef void(^ImageResultBlcok)(UIImage * _Nullable result, NSDictionary * _Nullable info);

@interface UIImage (SJCategory)
/**
 *  把颜色转变为图片
 *
 *  PARAM color 颜色
 *
 *  @return 图片
 */
+ (instancetype)imageWithColor:(UIColor *)color;


#pragma mark- 查找相册中最新存入的一张图片

#pragma mark- --------------------------------图片水印-------------------------------
/**
 *  给图片添加有“属性”的文字
 *
 *  PARAM maskStr       水印文字
 *  PARAM attributesDic 文字属性
 *  PARAM rect          水印文字的位置
 *
 *  @return 添加水印文字之后的图片
 */
- (UIImage *)watermarkImageWithString:(NSString *)maskStr WithStringAttributes:(NSDictionary *) attributesDic inRect:(CGRect)rect;

/**
 *  给图片添加部分文字有“属性”的文字
 *
 *  PARAM maskStr       水印文字
 *  PARAM attributesDic 文字属性
 *  PARAM range         特殊属性文字的范围
 *  PARAM rect          水印文字的位置
 *
 *  @return 添加水印文字之后的图片
 */
- (UIImage *) watermarkImageWithString:(NSString *)maskStr WithStringAttributes:(NSDictionary *) attributesDic inRange:(NSRange)range inRect:(CGRect)rect;

/**
 *  给图片添加 水印图片
 *
 *  mask 水印图片
 *  rect 添加水印图片的frame
 *
 *  添加完水印图片的图片
 */
- (UIImage *) watermarkImageWithImage:(UIImage*)markImage inRect:(CGRect)rect;

#pragma mark- --------------------------------图片压缩-------------------------------

/**
 *  压缩图片到指定尺寸，如果压缩后的尺寸宽高比例与图片原来宽高比例不同 “图片会变形”
 *
 *  PARAM targetSize 指定尺寸
 *
 *  @return 压缩后图片
 */

- (UIImage*) scaleImageToSize:(CGSize)targetSize;

/**
 *  按比例压缩图片（尺寸比例）压缩后图片的“尺寸”和“容量”大小都变化
 *
 *  PARAM compressRate 压缩比例 如：尺寸为 1024 * 1024 的图片按 0.5的比例(compressRate) 压缩后图片尺寸为 512 * 512
 *
 *  @return 压缩后的图片
 */
- (UIImage *)scaleImageToScaleRate:(CGFloat)scaleRate;

/**
 *  压缩png格式图片到指定内存大小
 *
 *  @param length 内存大小（单位:byte）
 *
 *  @return 压缩后的图片
 */
- (UIImage *)compassImageToLength:(NSInteger)length;

/**
 *  压缩png格式图片到指定内存大小
 *
 *  PARAM length 内存大小（单位:byte）
 *
 *  @return 压缩后的图片
 */
- (UIImage *)scaleImageToLength:(NSInteger)length;

+(UIImage *)scaleImage:(UIImage *)image toKb:(NSInteger)kb;

/**
 *  压缩图片容量到指定"内存大小" 图片的 “尺寸不变”
 *
 *  PARAM length 压缩后图片的最大内存 (单位:Byte)
 *
 *  @return 压缩后的图片
 */
- (NSMutableDictionary *)compressImageToLength:(NSInteger)length;


#pragma mark- ----------------------------------截图---------------------------------

/**
 *  截取一个contentView的内容
 *
 *  PARAM contentView 要截图的视图
 */
+ (UIImage *)shotscreenInView:(UIView *)view;

/**
 *  截屏
 *
 *  PARAM Window 要截屏的屏幕
 */
+ (UIImage *)shotscreenInWindow:(UIWindow *)window;

@end
